home *** CD-ROM | disk | FTP | other *** search
- class Distance
- {
- function Distance()
- {
- }
- static function LineSegmentLineSegment(segment1, segment2)
- {
- return Math.sqrt(Distance.LineSegmentLineSegmentSquared(segment1,segment2));
- }
- static function LineSegmentLineSegmentSquared(segment1, segment2)
- {
- var _loc21_ = segment1.m_endpoint1;
- var _loc19_ = segment1.m_endpoint2;
- var _loc20_ = segment2.m_endpoint1;
- var _loc18_ = segment2.m_endpoint2;
- var _loc27_ = _loc21_.GetAdd(_loc19_).GetMultiplyScalar(0.5);
- var _loc26_ = _loc20_.GetAdd(_loc18_).GetMultiplyScalar(0.5);
- var _loc24_ = _loc19_.GetSubtract(_loc21_).GetNormal();
- var _loc17_ = _loc18_.GetSubtract(_loc20_).GetNormal();
- var _loc9_ = segment1._length * 0.5;
- var _loc6_ = segment2._length * 0.5;
- var _loc16_ = _loc27_.GetSubtract(_loc26_);
- var _loc11_ = - _loc24_.DotProduct(_loc17_);
- var _loc8_ = _loc16_.DotProduct(_loc24_);
- var _loc10_ = - _loc16_.DotProduct(_loc17_);
- var _loc5_ = _loc16_.MagnitudeSquared();
- var _loc15_ = Math.abs(1 - _loc11_ * _loc11_);
- var _loc2_ = undefined;
- var _loc1_ = undefined;
- var _loc4_ = undefined;
- var _loc25_ = undefined;
- var _loc13_ = undefined;
- var _loc7_ = undefined;
- var _loc3_ = undefined;
- if(_loc15_ >= 0.00001)
- {
- _loc2_ = _loc11_ * _loc10_ - _loc8_;
- _loc1_ = _loc11_ * _loc8_ - _loc10_;
- _loc25_ = _loc9_ * _loc15_;
- _loc13_ = _loc6_ * _loc15_;
- if(_loc2_ >= - _loc25_)
- {
- if(_loc2_ <= _loc25_)
- {
- if(_loc1_ >= - _loc13_)
- {
- if(_loc1_ <= _loc13_)
- {
- var _loc22_ = 1 / _loc15_;
- _loc2_ *= _loc22_;
- _loc1_ *= _loc22_;
- _loc4_ = _loc2_ * (_loc2_ + _loc11_ * _loc1_ + 2 * _loc8_) + _loc1_ * (_loc11_ * _loc2_ + _loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ < - _loc9_)
- {
- _loc2_ = - _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ <= _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- }
- }
- else
- {
- _loc1_ = - _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ < - _loc9_)
- {
- _loc2_ = - _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ <= _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- }
- }
- else if(_loc1_ >= - _loc13_)
- {
- if(_loc1_ <= _loc13_)
- {
- _loc2_ = _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ < - _loc6_)
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ <= _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- else
- {
- _loc1_ = _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ < - _loc9_)
- {
- _loc2_ = - _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ <= _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ < - _loc6_)
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ <= _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- }
- }
- else
- {
- _loc1_ = - _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ < - _loc9_)
- {
- _loc2_ = - _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ <= _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ > _loc6_)
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ >= - _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- }
- }
- else if(_loc1_ >= - _loc13_)
- {
- if(_loc1_ <= _loc13_)
- {
- _loc2_ = - _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ < - _loc6_)
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ <= _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- else
- {
- _loc1_ = _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ > _loc9_)
- {
- _loc2_ = _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ >= - _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = - _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ < - _loc6_)
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ <= _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- }
- }
- else
- {
- _loc1_ = - _loc6_;
- _loc7_ = - (_loc11_ * _loc1_ + _loc8_);
- if(_loc7_ > _loc9_)
- {
- _loc2_ = _loc9_;
- _loc4_ = _loc2_ * (_loc2_ - 2 * _loc7_) + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else if(_loc7_ >= - _loc9_)
- {
- _loc2_ = _loc7_;
- _loc4_ = (- _loc2_) * _loc2_ + _loc1_ * (_loc1_ + 2 * _loc10_) + _loc5_;
- }
- else
- {
- _loc2_ = - _loc9_;
- _loc3_ = - (_loc11_ * _loc2_ + _loc10_);
- if(_loc3_ < - _loc6_)
- {
- _loc1_ = - _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else if(_loc3_ <= _loc6_)
- {
- _loc1_ = _loc3_;
- _loc4_ = (- _loc1_) * _loc1_ + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- else
- {
- _loc1_ = _loc6_;
- _loc4_ = _loc1_ * (_loc1_ - 2 * _loc3_) + _loc2_ * (_loc2_ + 2 * _loc8_) + _loc5_;
- }
- }
- }
- }
- else
- {
- var _loc14_ = _loc9_ + _loc6_;
- var _loc23_ = _loc11_ <= 0 ? 1 : -1;
- var _loc12_ = - _loc8_;
- if(_loc12_ < - _loc14_)
- {
- _loc12_ = - _loc14_;
- }
- else if(_loc12_ > _loc14_)
- {
- _loc12_ = _loc14_;
- }
- _loc1_ = _loc23_ * _loc8_ * _loc6_ / _loc14_;
- _loc2_ = _loc12_ + _loc23_ * _loc1_;
- _loc4_ = _loc12_ * (_loc12_ + 2 * _loc8_) + _loc5_;
- }
- return Math.abs(_loc4_);
- }
- static function Vector2DLineSegment(vector, segment)
- {
- return Math.sqrt(Distance.Vector2DLineSegmentSquared(vector,segment));
- }
- static function Vector2DLineSegmentSquared(vector, segment)
- {
- var _loc7_ = segment.m_endpoint1;
- var _loc8_ = segment.m_endpoint2;
- var _loc2_ = _loc7_.GetAdd(_loc8_).GetMultiplyScalar(0.5);
- var _loc3_ = _loc8_.GetSubtract(_loc7_).GetNormal();
- var _loc1_ = segment._length * 0.5;
- var _loc5_ = vector.GetSubtract(_loc2_);
- var _loc4_ = _loc3_.DotProduct(_loc5_);
- var _loc6_ = undefined;
- if(- _loc1_ < _loc4_)
- {
- if(_loc4_ < _loc1_)
- {
- _loc6_ = _loc2_.GetAdd(_loc3_.GetMultiplyScalar(_loc4_));
- }
- else
- {
- _loc6_ = _loc2_.GetAdd(_loc3_.GetMultiplyScalar(_loc1_));
- }
- }
- else
- {
- _loc6_ = _loc2_.GetSubtract(_loc3_.GetMultiplyScalar(_loc1_));
- }
- var _loc9_ = vector;
- _loc5_ = _loc6_.GetSubtract(_loc9_);
- return _loc5_.MagnitudeSquared();
- }
- static function CircleLineSegment(circle, segment)
- {
- return Math.sqrt(Distance.Vector2DLineSegmentSquared(circle._center,segment)) - circle._radius;
- }
- }
-